// Exception Handling support header for -*- C++ -*-
// Copyright (C) 1995, 1996 Free Software Foundation

#ifndef __EXCEPTION__
#define __EXCEPTION__

#pragma interface "exception"

extern "C++" {

#ifdef __HONOR_STD
namespace std 
{
#endif

class exception 
{
public:
	exception () {}
	virtual ~exception () {}
	virtual const char* what () const;
};

class bad_exception : public exception 
{
public:
	bad_exception () {}
	virtual ~bad_exception () {}
};

typedef void (*terminate_handler) ();

typedef void (*unexpected_handler) ();

terminate_handler set_terminate (terminate_handler);

void terminate () __attribute__ ((__noreturn__));

unexpected_handler set_unexpected (unexpected_handler);

void unexpected () __attribute__ ((__noreturn__));

bool uncaught_exception ();

#ifdef __HONOR_STD
} // namespace std
#endif

} // extern "C++"

#endif
